home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-06-08 | 53.7 KB | 1,605 lines |
- Newsgroups: comp.sources.misc
- From: Brad Appleton <brad@hcx1.ssd.csd.harris.com>
- Subject: v20i046: parseargs - functions to parse command line arguments, Patch06
- Message-ID: <1991Jun8.020907.22383@sparky.IMD.Sterling.COM>
- X-Md4-Signature: 804fc977204fa879cddb0f9effb807bb
- Date: Sat, 8 Jun 1991 02:09:07 GMT
- Approved: kent@sparky.imd.sterling.com
-
- Submitted-by: Brad Appleton <brad@hcx1.ssd.csd.harris.com>
- Posting-number: Volume 20, Issue 46
- Archive-name: parseargs/patch06
- Environment: UNIX, VMS, MS-DOS, OS/2, Amiga
- Patch-To: parseargs: Volume 17, Issue 46-57
-
- This is patch06 for parseargs. Its includes the following changes:
-
- - parsecntl(3) now correctly handles mispelled keywords for the
- pc_ARGFLAGS request (it was looping forever).
- - fixed an error in the documentation (a "NOT" was omitted).
- - added #ifdef SVR4 stuff to unix_man.c to print System V Release 4
- style manual pages.
- - allowed "sname=aname" syntax in the ad_prompt field of an ARGDESC
- in addition to the existing syntax. This new syntax allows argument
- names to be be completely different from keyword names.
- - changed get_name() & get_keyword to get_argname() & get_kwdname()
- (respectively) in strfuncs.[ch]. Also sped up the algorithm to get
- the keyword (since it no longer needs malloc).
-
- This patch consists of the file PATCH which is a set of context diffs to
- be fed to the patch program.
-
- To apply this patch:
-
- 1) cd to the directory containing the source for parseargs,
- 2) unshar this archive,
- 4) type "patch -p0 < PATCH" to apply the patches
-
- ______________________ "And miles to go before I sleep." ______________________
- Brad Appleton brad@ssd.csd.harris.com Harris Computer Systems
- uunet!hcx1!brad Fort Lauderdale, FL USA
- ~~~~~~~~~~~~~~~~~~~~ Disclaimer: I said it, not my company! ~~~~~~~~~~~~~~~~~~~
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # The tool that generated this appeared in the comp.sources.unix newsgroup;
- # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
- # Contents: PATCH
- # Wrapped by kent@sparky on Fri Jun 7 20:53:09 1991
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive."'
- if test -f 'PATCH' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'PATCH'\"
- else
- echo shar: Extracting \"'PATCH'\" \(50339 characters\)
- sed "s/^X//" >'PATCH' <<'END_OF_FILE'
- X*** Intro.OLD Mon Jun 3 11:13:52 1991
- X--- Intro Wed May 22 14:47:07 1991
- X***************
- X*** 83,89 ****
- X
- X And before you know it, your command-line had been parsed, all variables
- X have been assigned their corresponding values from the command-line, syntax
- X! has been verified, and a usage message (if required) has been printed.
- X
- X Under UNIX, the command-line syntax (using single character options) for the
- X above command would be:
- X--- 83,89 ----
- X
- X And before you know it, your command-line had been parsed, all variables
- X have been assigned their corresponding values from the command-line, syntax
- X! have been verified, and a usage message (if required) has been printed.
- X
- X Under UNIX, the command-line syntax (using single character options) for the
- X above command would be:
- X***************
- X*** 108,114 ****
- X cmdname [/a[=<areacode>]] [/g=<newsgroups>...] [/r=<repcount>]
- X [/s=<sepchar>] [/x] <name> [<args>...]
- X
- X! The AmigaDOS command-line syntax would be the following:
- X
- X cmdname [AREA [<areacode>]] [GROUPS <newsgroups>...] [REP <repcount>]
- X [SEP <sepchar>] [X] <name> [<args>...]
- X--- 108,114 ----
- X cmdname [/a[=<areacode>]] [/g=<newsgroups>...] [/r=<repcount>]
- X [/s=<sepchar>] [/x] <name> [<args>...]
- X
- X! The AmigaDOS command-line syntax would be the following:
- X
- X cmdname [AREA [<areacode>]] [GROUPS <newsgroups>...] [REP <repcount>]
- X [SEP <sepchar>] [X] <name> [<args>...]
- X*** README.OLD Mon Jun 3 11:14:12 1991
- X--- README Wed May 22 14:56:09 1991
- X***************
- X*** 290,295 ****
- X--- 290,296 ----
- X I also added the capability to handle ARGVEC arguments into the
- X remaining argument type functions.
- X
- X+
- X NEW ARGUMENT FLAGS:
- X ===================
- X I added the following argument flags to parseargs:
- X***************
- X*** 306,311 ****
- X--- 307,313 ----
- X
- X Consult the manual page for parseargs(1) & parseargs(3) for more information.
- X
- X+
- X NEW INTERFACE
- X =============
- X I added a set of Macros to allow a more "self documenting" approach to
- X***************
- X*** 336,341 ****
- X--- 338,344 ----
- X variable. See the parseargs(3) and parseargs(1) manual pages for more
- X information regarding USAGECNTL.
- X
- X+
- X SPECIFYING ALTERNATE PARSING BEHAVIOR
- X =====================================
- X Parseargs provides 3 methods for controlling "how" the command-line is
- X***************
- X*** 351,356 ****
- X--- 354,360 ----
- X See the manual pages for parseargs(1), parseargs(3), and parsecntl(3)
- X for more information.
- X
- X+
- X GIVING DEFAULT ARGUMENTS
- X ========================
- X Programs that use parseargs may be given default arguments under UNIX
- X***************
- X*** 379,389 ****
- X relatively easy to add new shell-types. At this point in time, parseargs
- X will generate output for the following command-interpreters:
- X
- X! sh (Bourne Shell)
- X! csh/tcsh (C-Shell)
- X! bash (Bourne-Again Shell)
- X! ksh (Korn Shell)
- X! rc (Plan 9 Shell)
- X perl
- X awk
- X
- X--- 383,394 ----
- X relatively easy to add new shell-types. At this point in time, parseargs
- X will generate output for the following command-interpreters:
- X
- X! sh (Bourne Shell)
- X! csh/tcsh/itcsh (C-Shell)
- X! bash (Bourne-Again Shell)
- X! ksh (Korn Shell)
- X! rc (Plan 9 Shell)
- X! zsh (Z shell)
- X perl
- X awk
- X
- X*** amiga_args.c.OLD Mon Jun 3 11:14:17 1991
- X--- amiga_args.c Mon May 13 13:44:24 1991
- X***************
- X*** 144,150 ****
- X BSET( arg_flags(cmd_prev(cmd)), ARGGIVEN );
- X }
- X else { /* value was required */
- X! (VOID)get_keyword( arg_sname(cmd_prev(cmd)), keyword );
- X usrerr( "value required for %s keyword", keyword );
- X parse_error = pe_SYNTAX;
- X }
- X--- 144,150 ----
- X BSET( arg_flags(cmd_prev(cmd)), ARGGIVEN );
- X }
- X else { /* value was required */
- X! (VOID)get_kwdname( arg_sname(cmd_prev(cmd)), keyword );
- X usrerr( "value required for %s keyword", keyword );
- X parse_error = pe_SYNTAX;
- X }
- X***************
- X*** 310,316 ****
- X BSET( arg_flags(cmd_prev(cmd)), ARGGIVEN );
- X }
- X else { /* value was required */
- X! (VOID)get_keyword( arg_sname(cmd_prev(cmd)), keyword );
- X usrerr( "value required for %s keyword", keyword );
- X parse_error = pe_SYNTAX;
- X }
- X--- 310,316 ----
- X BSET( arg_flags(cmd_prev(cmd)), ARGGIVEN );
- X }
- X else { /* value was required */
- X! (VOID)get_kwdname( arg_sname(cmd_prev(cmd)), keyword );
- X usrerr( "value required for %s keyword", keyword );
- X parse_error = pe_SYNTAX;
- X }
- X***************
- X*** 366,378 ****
- X char * pos;
- X argName_t keyword, name;
- X
- X! (VOID) get_name(arg_sname(ad), name);
- X
- X if ( ARG_isPOSITIONAL(ad) ) {
- X sprintf( buf, "<%s>", name );
- X }
- X else {
- X! (VOID) get_keyword(arg_sname(ad), keyword);
- X (VOID) strcpy( buf, keyword );
- X pos = buf + strlen(buf);
- X
- X--- 366,378 ----
- X char * pos;
- X argName_t keyword, name;
- X
- X! (VOID) get_argname(arg_sname(ad), name);
- X
- X if ( ARG_isPOSITIONAL(ad) ) {
- X sprintf( buf, "<%s>", name );
- X }
- X else {
- X! (VOID) get_kwdname(arg_sname(ad), keyword);
- X (VOID) strcpy( buf, keyword );
- X pos = buf + strlen(buf);
- X
- X*** arglist.c.OLD Mon Jun 3 11:14:22 1991
- X--- arglist.c Mon May 13 13:44:24 1991
- X***************
- X*** 94,100 ****
- X ArgListHead *nl;
- X ArgList *nd;
- X
- X! (VOID) get_name( arg_sname(ad), argname );
- X if (copyf) {
- X register int i;
- X
- X--- 94,100 ----
- X ArgListHead *nl;
- X ArgList *nd;
- X
- X! (VOID) get_argname( arg_sname(ad), argname );
- X if (copyf) {
- X register int i;
- X
- X*** argtype.c.OLD Mon Jun 3 11:14:26 1991
- X--- argtype.c Mon May 13 13:44:25 1991
- X***************
- X*** 202,208 ****
- X char *cp;
- X argName_t argname;
- X
- X! (VOID) get_name( arg_sname(ad), argname );
- X if (copyf) {
- X register int i;
- X
- X--- 202,208 ----
- X char *cp;
- X argName_t argname;
- X
- X! (VOID) get_argname( arg_sname(ad), argname );
- X if (copyf) {
- X register int i;
- X
- X***************
- X*** 270,276 ****
- X int status = FALSE;
- X char c;
- X
- X! (VOID) get_name( arg_sname(ad), argname );
- X if (!vp || !*vp) {
- X status = FALSE;
- X }
- X--- 270,276 ----
- X int status = FALSE;
- X char c;
- X
- X! (VOID) get_argname( arg_sname(ad), argname );
- X if (!vp || !*vp) {
- X status = FALSE;
- X }
- X***************
- X*** 340,346 ****
- X argName_t argname; \
- X num_t value; \
- X \
- X! (VOID) get_name( arg_sname(ad), argname ); \
- X value = (num_t) strtol(vp, &vpp, 0); \
- X if (*vpp != '\0') { \
- X usrerr("invalid integer argument '%s' for %s", vp, argname); \
- X--- 340,346 ----
- X argName_t argname; \
- X num_t value; \
- X \
- X! (VOID) get_argname( arg_sname(ad), argname ); \
- X value = (num_t) strtol(vp, &vpp, 0); \
- X if (*vpp != '\0') { \
- X usrerr("invalid integer argument '%s' for %s", vp, argname); \
- X***************
- X*** 401,407 ****
- X argName_t argname; \
- X dec_t value; \
- X \
- X! (VOID) get_name( arg_sname(ad), argname ); \
- X value = (dec_t) strtod(vp, &vpp); \
- X if (*vpp != '\0') { \
- X usrerr("invalid decimal argument '%s' for %s", vp, argname); \
- X--- 401,407 ----
- X argName_t argname; \
- X dec_t value; \
- X \
- X! (VOID) get_argname( arg_sname(ad), argname ); \
- X value = (dec_t) strtod(vp, &vpp); \
- X if (*vpp != '\0') { \
- X usrerr("invalid decimal argument '%s' for %s", vp, argname); \
- X***************
- X*** 504,510 ****
- X argName_t argname;
- X int len;
- X
- X! (VOID) get_name( arg_sname(ad), argname );
- X
- X /* ARGVECs are not supported for this Boolean arg-types */
- X if ( ARG_isVEC(ad) )
- X--- 504,510 ----
- X argName_t argname;
- X int len;
- X
- X! (VOID) get_argname( arg_sname(ad), argname );
- X
- X /* ARGVECs are not supported for this Boolean arg-types */
- X if ( ARG_isVEC(ad) )
- X***************
- X*** 574,580 ****
- X argName_t argname;
- X BOOL retval;
- X
- X! (VOID) get_name( arg_sname(ad), argname );
- X
- X /* ARGVECs are not supported for this Boolean arg-types */
- X if ( ARG_isVEC(ad) )
- X--- 574,580 ----
- X argName_t argname;
- X BOOL retval;
- X
- X! (VOID) get_argname( arg_sname(ad), argname );
- X
- X /* ARGVECs are not supported for this Boolean arg-types */
- X if ( ARG_isVEC(ad) )
- X***************
- X*** 596,602 ****
- X argName_t argname;
- X BOOL retval;
- X
- X! (VOID) get_name( arg_sname(ad), argname );
- X
- X /* ARGVECs are not supported for this Boolean arg-types */
- X if ( ARG_isVEC(ad) )
- X--- 596,602 ----
- X argName_t argname;
- X BOOL retval;
- X
- X! (VOID) get_argname( arg_sname(ad), argname );
- X
- X /* ARGVECs are not supported for this Boolean arg-types */
- X if ( ARG_isVEC(ad) )
- X***************
- X*** 618,624 ****
- X argName_t argname;
- X BOOL retval;
- X
- X! (VOID) get_name( arg_sname(ad), argname );
- X
- X /* ARGVECs are not supported for this Boolean arg-types */
- X if ( ARG_isVEC(ad) )
- X--- 618,624 ----
- X argName_t argname;
- X BOOL retval;
- X
- X! (VOID) get_argname( arg_sname(ad), argname );
- X
- X /* ARGVECs are not supported for this Boolean arg-types */
- X if ( ARG_isVEC(ad) )
- X*** doc/Makefile.OLD Mon Jun 3 11:14:32 1991
- X--- doc/Makefile Tue May 14 14:38:21 1991
- X***************
- X*** 144,150 ****
- X clobber: clean
- X ${DEL} *.txt
- X
- X! spell: ${INCS} ${SRCS}}
- X ${SPELL} ${SPELLFLAGS} ${INCS} ${SRCS}
- X
- X print: ${MANFILES} ${INCS}
- X--- 144,150 ----
- X clobber: clean
- X ${DEL} *.txt
- X
- X! spell: ${INCS} ${SRCS}
- X ${SPELL} ${SPELLFLAGS} ${INCS} ${SRCS}
- X
- X print: ${MANFILES} ${INCS}
- X*** doc/argdesc.inc.OLD Mon Jun 3 11:14:40 1991
- X--- doc/argdesc.inc Sat May 11 12:17:40 1991
- X***************
- X*** 49,57 ****
- X description (the description must be separated from the long-name by
- X at least one whitespace character and may optionally be enclosed in
- X a set of balanced delimiters (such as parentheses, curly-braces,
- X! square-brackets, or angle-brackets). If the long-name contains any
- X uppercase characters, then the substring of long-name consisting of
- X! all uppercase characters is used as the argument keyword and the entire
- X! long-name is used as the name of the argument (if a value may be
- X! supplied). The long-name may be matched by supplying a unique prefix
- X! of either the argument keyword or the argument name.
- X--- 49,63 ----
- X description (the description must be separated from the long-name by
- X at least one whitespace character and may optionally be enclosed in
- X a set of balanced delimiters (such as parentheses, curly-braces,
- X! square-brackets, or angle-brackets). The longname may be specifed
- X! in two parts: a keyword name and an argument name. The argument
- X! name may be separated from the keyword name by a single equal sign
- X! (`='). No whitespace is allowed before or after the equal sign.
- X!
- X! Alternatatively, the keyword name may be distinguished from the
- X! argument name by character case: if the long-name contains any
- X uppercase characters, then the substring of long-name consisting of
- X! all uppercase characters is used as the argument keyword and the
- X! entire long-name is used as the name of the argument (if a value may
- X! be supplied). The long-name may be matched by supplying a unique
- X! prefix of either the argument keyword or the argument name.
- X*** doc/parseargs.man1.OLD Mon Jun 3 11:15:49 1991
- X--- doc/parseargs.man1 Sat May 11 12:20:43 1991
- X***************
- X*** 158,163 ****
- X--- 158,176 ----
- X and printed in usage messages. This string may be followed by a
- X textual description that is enclosed in parentheses, square brackets,
- X curly braces, or angle brackets.
- X+
- X+ The prompt-string may be specifed
- X+ in two parts: a keyword name and an argument name. The argument
- X+ name may be separated from the keyword name by a single equal sign
- X+ ('='). No whitespace is allowed before or after the equal sign.
- X+
- X+ Alternatatively, the keyword name may be distinguished from the
- X+ argument name by character case: if the long-name contains any
- X+ uppercase characters, then the substring of long-name consisting of
- X+ all uppercase characters is used as the argument keyword and the
- X+ entire long-name is used as the name of the argument (if a value may
- X+ be supplied). The long-name may be matched by supplying a unique
- X+ prefix of either the argument keyword or the argument name.
- X .PP
- X The argument specification string must be terminated by the single string:
- X ``ENDOFARGS''.
- X*** doc/returns.inc.OLD Mon Jun 3 11:16:33 1991
- X--- doc/returns.inc Mon May 20 17:36:20 1991
- X***************
- X*** 28,35 ****
- X .IP "\fIpe_\s-1NOMATCH\s+1\fP"
- X Unable to match the named argument. This occurs
- X when the argument keyword name passed to \fIparsecntl\fP (using the
- X! \fIpc_\s-1ARGFLAGS\s+1\fP functions code) was found in the given argdesc-array
- X! or in its default-list.
- X .\"---------------------------------------------
- X .IP "\fIpe_\s-1BADMODE\s+1\fP"
- X Bad mode for given command in \fIparsecntl\fP. This occurs when
- X--- 28,35 ----
- X .IP "\fIpe_\s-1NOMATCH\s+1\fP"
- X Unable to match the named argument. This occurs
- X when the argument keyword name passed to \fIparsecntl\fP (using the
- X! \fIpc_\s-1ARGFLAGS\s+1\fP functions code) was NOT found in the given
- X! argdesc-array or in its default-list.
- X .\"---------------------------------------------
- X .IP "\fIpe_\s-1BADMODE\s+1\fP"
- X Bad mode for given command in \fIparsecntl\fP. This occurs when
- X*** ibm_args.c.OLD Mon Jun 3 11:17:03 1991
- X--- ibm_args.c Mon May 13 13:44:26 1991
- X***************
- X*** 301,307 ****
- X BSET( arg_flags(ad), ARGGIVEN );
- X }
- X else {
- X! (VOID) get_keyword( arg_sname(ad), name );
- X usrerr("%c%s switch requires an argument", KwdPrefix, name);
- X arg_flags(ad) = flags;
- X parse_error = pe_SYNTAX;
- X--- 301,307 ----
- X BSET( arg_flags(ad), ARGGIVEN );
- X }
- X else {
- X! (VOID) get_kwdname( arg_sname(ad), name );
- X usrerr("%c%s switch requires an argument", KwdPrefix, name);
- X arg_flags(ad) = flags;
- X parse_error = pe_SYNTAX;
- X***************
- X*** 429,435 ****
- X BSET( arg_flags(ad), ARGGIVEN );
- X }
- X else {
- X! (VOID) get_name(arg_sname(ad), name);
- X usrerr( "%s required for %c%c flag",
- X name, OptPrefix, arg_cname(ad) );
- X arg_flags(ad) = flags;
- X--- 429,435 ----
- X BSET( arg_flags(ad), ARGGIVEN );
- X }
- X else {
- X! (VOID) get_argname(arg_sname(ad), name);
- X usrerr( "%s required for %c%c flag",
- X name, OptPrefix, arg_cname(ad) );
- X arg_flags(ad) = flags;
- X***************
- X*** 585,597 ****
- X char *pos;
- X argName_t name, keyword;
- X
- X! (VOID) get_name( arg_sname(ad), name );
- X
- X if (ARG_isPOSITIONAL(ad)) {
- X sprintf( buf, "<%s>", name );
- X }
- X else {
- X! (VOID) get_keyword( arg_sname(ad), keyword );
- X
- X if ( isupper(arg_cname(ad)) && toupper(*keyword) == arg_cname(ad) ) {
- X *keyword = toupper(*keyword);
- X--- 585,597 ----
- X char *pos;
- X argName_t name, keyword;
- X
- X! (VOID) get_argname( arg_sname(ad), name );
- X
- X if (ARG_isPOSITIONAL(ad)) {
- X sprintf( buf, "<%s>", name );
- X }
- X else {
- X! (VOID) get_kwdname( arg_sname(ad), keyword );
- X
- X if ( isupper(arg_cname(ad)) && toupper(*keyword) == arg_cname(ad) ) {
- X *keyword = toupper(*keyword);
- X*** parseargs.awk.OLD Mon Jun 3 11:17:09 1991
- X--- parseargs.awk Wed May 15 10:03:26 1991
- X***************
- X*** 40,46 ****
- X ## The following global variables may be assigned before calling parseargs:
- X ##
- X ## PROGNAME -- name of the current awk script (default= ARGV[0])
- X! ## PARSEOPTS -- any extra options to pass toi parseargs() (default="-ul")
- X ## PARSEINPUT -- input file for parseargs(1) (default=unique-name)
- X ## PARSEOUTPUT -- output file for parseargs(1) (default=unique-name)
- X ##
- X--- 40,46 ----
- X ## The following global variables may be assigned before calling parseargs:
- X ##
- X ## PROGNAME -- name of the current awk script (default= ARGV[0])
- X! ## PARSEOPTS -- any extra options to pass to parseargs() (default="-ul")
- X ## PARSEINPUT -- input file for parseargs(1) (default=unique-name)
- X ## PARSEOUTPUT -- output file for parseargs(1) (default=unique-name)
- X ##
- X*** parseargs.c.OLD Mon Jun 3 11:17:16 1991
- X--- parseargs.c Thu May 16 16:51:21 1991
- X***************
- X*** 1092,1098 ****
- X #endif
- X {
- X int i;
- X! register char *sh = sh_str;
- X
- X /* special case to recognize tcsh & itcsh */
- X if ( strEQ( sh, "tcsh" ) ) ++sh;
- X--- 1092,1098 ----
- X #endif
- X {
- X int i;
- X! register CONST char *sh = sh_str;
- X
- X /* special case to recognize tcsh & itcsh */
- X if ( strEQ( sh, "tcsh" ) ) ++sh;
- X*** parseargs.h.OLD Mon Jun 3 11:17:24 1991
- X--- parseargs.h Mon May 20 17:35:46 1991
- X***************
- X*** 97,103 ****
- X ** description (the description must be separated from the long-name by
- X ** at least one whitespace character and may optionally be enclosed in
- X ** a set of balanced delimiters (such as parentheses, curly-braces,
- X! ** square-brackets, or angle-brackets). If the long-name contains any
- X ** uppercase characters, then the substring of long-name consisting of
- X ** all uppercase characters is used as the argument keyword and the
- X ** entire long-name is used as the name of the argument (if a value may
- X--- 97,108 ----
- X ** description (the description must be separated from the long-name by
- X ** at least one whitespace character and may optionally be enclosed in
- X ** a set of balanced delimiters (such as parentheses, curly-braces,
- X! ** square-brackets, or angle-brackets). The longname may be specifed
- X! ** in two parts: a keyword name and an argument name. The argument
- X! ** name may be separated from the keyword name by a single equal sign
- X! ** ('='). No whitespace is allowed before or after the equal sign.
- X! ** Alternatatively, the keyword name may be distinguished from the
- X! ** argument name by character case: if the long-name contains any
- X ** uppercase characters, then the substring of long-name consisting of
- X ** all uppercase characters is used as the argument keyword and the
- X ** entire long-name is used as the name of the argument (if a value may
- X***************
- X*** 140,146 ****
- X #define pe_NOMATCH 3
- X /* -- unable to match the named argument. This occurs
- X ** when the argument keyword name passed to parsecntl() (using the
- X! ** pc_ARGFLAGS functions code) was found in the given argdesc-array
- X ** or in its default-list.
- X */
- X #define pe_BADMODE 4
- X--- 145,151 ----
- X #define pe_NOMATCH 3
- X /* -- unable to match the named argument. This occurs
- X ** when the argument keyword name passed to parsecntl() (using the
- X! ** pc_ARGFLAGS function code) was NOT found in the given argdesc-array
- X ** or in its default-list.
- X */
- X #define pe_BADMODE 4
- X*** parseargs.pl.OLD Mon Jun 3 11:17:30 1991
- X--- parseargs.pl Wed May 15 10:02:06 1991
- X***************
- X*** 39,45 ****
- X ;# The global variable PARSEARGS will contain the command-line used to
- X ;# invoke parseargs(1).
- X ;#
- X! ;# ARGV and ARGC may be reset, all other values are (re)set in <arr>.
- X ;#
- X ;# ^RETURN-VALUE:
- X ;# The exit code returned by parseargs(1).
- X--- 39,45 ----
- X ;# The global variable PARSEARGS will contain the command-line used to
- X ;# invoke parseargs(1).
- X ;#
- X! ;# ARGV and (and any other variables named in <argd>) may be overwritten.
- X ;#
- X ;# ^RETURN-VALUE:
- X ;# The exit code returned by parseargs(1).
- X*** patchlevel.h.OLD Mon Jun 3 11:17:35 1991
- X--- patchlevel.h Mon Jun 3 10:35:24 1991
- X***************
- X*** 2,7 ****
- X--- 2,21 ----
- X ** ^FILE: patchlevel.h - current patchlevel for parseargs
- X **
- X ** ^HISTORY:
- X+ ** 05/11/91 Brad Appleton <brad@ssd.csd.harris.com>
- X+ ** Patch06
- X+ ** - parsecntl(3) now correctly handles mispelled keywords for the
- X+ ** pc_ARGFLAGS request (it was looping forever).
- X+ ** - fixed an error in the documentation (a "NOT" was omitted).
- X+ ** - added #ifdef SVR4 stuff to unix_man.c to print System V Release 4
- X+ ** style manual pages.
- X+ ** - allowed "sname=aname" syntax in the ad_prompt field of an ARGDESC
- X+ ** in addition to the existing syntax. This new syntax allows argument
- X+ ** names to be be completely different from keyword names.
- X+ ** - changed get_name() & get_keyword to get_argname() & get_kwdname()
- X+ ** (respectively) in strfuncs.[ch]. Also sped up the algorithm to get
- X+ ** the keyword (since it no longer needs malloc).
- X+ **
- X ** 04/25/91 Brad Appleton <brad@ssd.csd.harris.com>
- X ** Patch05
- X ** - documented support for zsh in parseargs(1)
- X***************
- X*** 66,72 ****
- X
- X #define VERSION 2
- X #define REVISION 0
- X! #define PATCHLEVEL 5
- X
- X #ifdef __STDC__
- X static const char
- X--- 80,86 ----
- X
- X #define VERSION 2
- X #define REVISION 0
- X! #define PATCHLEVEL 6
- X
- X #ifdef __STDC__
- X static const char
- X***************
- X*** 73,76 ****
- X #else
- X static char
- X #endif
- X! _Ident[] = "@(#)parseargs 2.0 patchlevel 5";
- X--- 87,90 ----
- X #else
- X static char
- X #endif
- X! _Ident[] = "@(#)parseargs 2.0 patchlevel 6";
- X*** stest.c.OLD Mon Jun 3 11:17:47 1991
- X--- stest.c Mon Jun 3 10:34:00 1991
- X***************
- X*** 115,121 ****
- X 'n', ARGREQ|ARGPOS, argStr, __ &Name, "name (name to look for)",
- X 's', ARGVALOPT, argStr, __ &Str, "STRing (optional string to use)",
- X 'g', ARGVEC, argStr, __ &Groups, "newsGROUPS (newsgroups to test)",
- X! 'c', ARGOPT, argInt, __ &RepCount, "REPcount (repeat count per group)",
- X 'd', ARGOPT, argStr, __ &DirName, "DIRname (work directory)",
- X 'i', ARGVEC, argInt, __ &Integers, "INTegerS (vector of numbers)",
- X '#', ARGHIDDEN, argBool, __ &XRated, "XratedMODE (naughty! naughty!)",
- X--- 115,121 ----
- X 'n', ARGREQ|ARGPOS, argStr, __ &Name, "name (name to look for)",
- X 's', ARGVALOPT, argStr, __ &Str, "STRing (optional string to use)",
- X 'g', ARGVEC, argStr, __ &Groups, "newsGROUPS (newsgroups to test)",
- X! 'c', ARGOPT, argInt, __ &RepCount, "REP=count (repeat count per group)",
- X 'd', ARGOPT, argStr, __ &DirName, "DIRname (work directory)",
- X 'i', ARGVEC, argInt, __ &Integers, "INTegerS (vector of numbers)",
- X '#', ARGHIDDEN, argBool, __ &XRated, "XratedMODE (naughty! naughty!)",
- X***************
- X*** 124,130 ****
- X 'y', ARGOPT, argUBool, __ &YFlag, "Yflag (unset Y flag)",
- X 'z', ARGOPT, argTBool, __ &ZFlag, "Zflag (toggle Z flag)",
- X
- X! 't', ARGOPT, argChar, __ &TabChar, "TABchar (field delimiter)",
- X 'r', ARGNOVAL, argMine, __ NULL, "raw (trigger raw-mode \
- X before processing any more arguments on the command-line)",
- X
- X--- 124,130 ----
- X 'y', ARGOPT, argUBool, __ &YFlag, "Yflag (unset Y flag)",
- X 'z', ARGOPT, argTBool, __ &ZFlag, "Zflag (toggle Z flag)",
- X
- X! 't', ARGOPT, argChar, __ &TabChar, "TAB=char (field delimiter)",
- X 'r', ARGNOVAL, argMine, __ NULL, "raw (trigger raw-mode \
- X before processing any more arguments on the command-line)",
- X
- X***************
- X*** 143,149 ****
- X 'n', ARGREQ|ARGPOS, argStr, __ &Name, "name (name to look for)",
- X 's', ARGVALOPT, argStr, __ &Str, "STRing (optional string to use)",
- X 'g', ARGVEC, argStr, __ &Groups, "newsGROUPS (newsgroups to test)",
- X! 'c', ARGOPT, argInt, __ &RepCount, "REPcount (repeat count per group)",
- X 'd', ARGOPT, argStr, __ &DirName, "DIRname (work directory)",
- X 'i', ARGVEC, argInt, __ &Integers, "INTegerS (vector of numbers)",
- X '#', ARGHIDDEN, argBool, __ &XRated, "XratedMODE (naughty! naughty!)",
- X--- 143,149 ----
- X 'n', ARGREQ|ARGPOS, argStr, __ &Name, "name (name to look for)",
- X 's', ARGVALOPT, argStr, __ &Str, "STRing (optional string to use)",
- X 'g', ARGVEC, argStr, __ &Groups, "newsGROUPS (newsgroups to test)",
- X! 'c', ARGOPT, argInt, __ &RepCount, "REP=count (repeat count per group)",
- X 'd', ARGOPT, argStr, __ &DirName, "DIRname (work directory)",
- X 'i', ARGVEC, argInt, __ &Integers, "INTegerS (vector of numbers)",
- X '#', ARGHIDDEN, argBool, __ &XRated, "XratedMODE (naughty! naughty!)",
- X***************
- X*** 152,158 ****
- X 'y', ARGOPT, argUBool, __ &YFlag, "Yflag (unset Y flag)",
- X 'z', ARGOPT, argTBool, __ &ZFlag, "Zflag (toggle Z flag)",
- X
- X! 't', ARGOPT, argChar, __ &TabChar, "TABchar (field delimiter)",
- X 'r', ARGNOVAL, argMine, __ NULL, "raw (trigger raw-mode \
- X before processing any more arguments on the command-line)",
- X
- X--- 152,158 ----
- X 'y', ARGOPT, argUBool, __ &YFlag, "Yflag (unset Y flag)",
- X 'z', ARGOPT, argTBool, __ &ZFlag, "Zflag (toggle Z flag)",
- X
- X! 't', ARGOPT, argChar, __ &TabChar, "TAB=char (field delimiter)",
- X 'r', ARGNOVAL, argMine, __ NULL, "raw (trigger raw-mode \
- X before processing any more arguments on the command-line)",
- X
- X***************
- X*** 258,264 ****
- X printf( "XRated=%d, Raw-Mode = \"%s\"\n", XRated, Mode );
- X
- X /* to call parsecntl() to see if the optional value was supplied */
- X! (VOID) parsecntl( (ARGDESC *)argd, pc_ARGFLAGS, pc_READ, "string", &flags);
- X
- X if ( BTEST(flags, ARGGIVEN) && !BTEST(flags, ARGVALGIVEN) ) {
- X printf("String=!No Value Given on CmdLine!\n" );
- X--- 258,264 ----
- X printf( "XRated=%d, Raw-Mode = \"%s\"\n", XRated, Mode );
- X
- X /* to call parsecntl() to see if the optional value was supplied */
- X! i = parsecntl( (ARGDESC *)argd, pc_ARGFLAGS, pc_READ, "string", &flags);
- X
- X if ( BTEST(flags, ARGGIVEN) && !BTEST(flags, ARGVALGIVEN) ) {
- X printf("String=!No Value Given on CmdLine!\n" );
- X*** strfuncs.c.OLD Mon Jun 3 11:17:52 1991
- X--- strfuncs.c Wed May 15 14:33:16 1991
- X***************
- X*** 23,30 ****
- X ** strtrim() -- trim leading and trailing characters in a string
- X ** strsplit() -- split a string up into a vector of tokens
- X ** strjoin() -- join a vector of tokens into a single string
- X! ** get_name() -- return the aname (argument-name) of an argument
- X! ** get_keyword() -- return the sname (keyword-name) of an argument
- X ** match() -- match two keywords (case insensitive) upto a unique prefix
- X ** basename() -- remove the leading directories (and disks) from a path
- X ** indent_para() -- print an indented hanging paragraph
- X--- 23,30 ----
- X ** strtrim() -- trim leading and trailing characters in a string
- X ** strsplit() -- split a string up into a vector of tokens
- X ** strjoin() -- join a vector of tokens into a single string
- X! ** get_argname() -- return the aname (argument-name) of an argument
- X! ** get_kwdname() -- return the sname (keyword-name) of an argument
- X ** match() -- match two keywords (case insensitive) upto a unique prefix
- X ** basename() -- remove the leading directories (and disks) from a path
- X ** indent_para() -- print an indented hanging paragraph
- X***************
- X*** 47,57 ****
- X
- X static CONST char WhiteSpace[] = " \t\n\r\v\f";
- X
- X!
- X #if ( defined(unix_style) || defined(ibm_style) )
- X # define TO_KWDCASE(c) TOLOWER(c)
- X #else
- X # define TO_KWDCASE(c) TOUPPER(c)
- X #endif
- X
- X
- X--- 47,59 ----
- X
- X static CONST char WhiteSpace[] = " \t\n\r\v\f";
- X
- X! #define c_ARG_SEP '='
- X #if ( defined(unix_style) || defined(ibm_style) )
- X # define TO_KWDCASE(c) TOLOWER(c)
- X+ # define KWDCASECOPY(dest,src) strlcpy(dest,src)
- X #else
- X # define TO_KWDCASE(c) TOUPPER(c)
- X+ # define KWDCASECOPY(dest,src) strucpy(dest,src)
- X #endif
- X
- X
- X***************
- X*** 746,757 ****
- X
- X
- X /***************************************************************************
- X! ** ^FUNCTION: get_name - return the aname (argument-name) of an argument
- X **
- X ** ^SYNOPSIS:
- X */
- X #ifndef __ANSI_C__
- X! char *get_name( s, buf )
- X /*
- X ** ^PARAMETERS:
- X */
- X--- 748,759 ----
- X
- X
- X /***************************************************************************
- X! ** ^FUNCTION: get_argname - return the aname (argument-name) of an argument
- X **
- X ** ^SYNOPSIS:
- X */
- X #ifndef __ANSI_C__
- X! char *get_argname( s, buf )
- X /*
- X ** ^PARAMETERS:
- X */
- X***************
- X*** 764,770 ****
- X #endif /* !__ANSI_C__ */
- X
- X /* ^DESCRIPTION:
- X! ** Get_name will get the full argument name of the given argument
- X ** (not just the keyword name) and copy it to buf.
- X **
- X ** ^REQUIREMENTS:
- X--- 766,772 ----
- X #endif /* !__ANSI_C__ */
- X
- X /* ^DESCRIPTION:
- X! ** Get_argname will get the full argument name of the given argument
- X ** (not just the keyword name) and copy it to buf.
- X **
- X ** ^REQUIREMENTS:
- X***************
- X*** 782,803 ****
- X ** and copy the result in the given buffer
- X ***^^**********************************************************************/
- X #ifdef __ANSI_C__
- X! char *get_name( const char *s, char *buf )
- X #endif
- X {
- X! /* <buf> must be large enough to hold the result! */
- X! strlcpy(buf, s);
- X return buf;
- X }
- X
- X
- X /***************************************************************************
- X! ** ^FUNCTION: get_keyword - get the sname (keyword name) of an argument
- X **
- X ** ^SYNOPSIS:
- X */
- X #ifndef __ANSI_C__
- X! char *get_keyword( s, buf )
- X /*
- X ** ^PARAMETERS:
- X */
- X--- 784,815 ----
- X ** and copy the result in the given buffer
- X ***^^**********************************************************************/
- X #ifdef __ANSI_C__
- X! char *get_argname( const char *s, char *buf )
- X #endif
- X {
- X! register CONST char *p1 = s, *p2;
- X!
- X! /* see if sname and aname are separated by c_ARG_SEP
- X! ** <buf> must be large enough to hold the result!
- X! */
- X! p2 = strchr( p1, c_ARG_SEP );
- X! if ( p2 ) {
- X! strlcpy( buf, ++p2 );
- X! }
- X! else {
- X! strlcpy(buf, s);
- X! }
- X return buf;
- X }
- X
- X
- X /***************************************************************************
- X! ** ^FUNCTION: get_kwdname - get the sname (keyword name) of an argument
- X **
- X ** ^SYNOPSIS:
- X */
- X #ifndef __ANSI_C__
- X! char *get_kwdname( s, buf )
- X /*
- X ** ^PARAMETERS:
- X */
- X***************
- X*** 810,816 ****
- X #endif /* !__ANSI_C__ */
- X
- X /* ^DESCRIPTION:
- X! ** Get_name will get the keyword name of the given argument
- X ** (not the entire argument name) and copy it to buf.
- X **
- X ** The sname (keyword-name) consists only of all uppercase characters
- X--- 822,828 ----
- X #endif /* !__ANSI_C__ */
- X
- X /* ^DESCRIPTION:
- X! ** Get_kwdname will get the keyword name of the given argument
- X ** (not the entire argument name) and copy it to buf.
- X **
- X ** The sname (keyword-name) consists only of all uppercase characters
- X***************
- X*** 833,877 ****
- X ** and copy the result in the given buffer
- X ***^^**********************************************************************/
- X #ifdef __ANSI_C__
- X! char *get_keyword( const char *s, char *buf )
- X #endif
- X {
- X! register char *p1 = (char *)s, *p2;
- X! register int i, len = 0;
- X! char *caps = CHARNULL;
- X
- X if ( !p1 ) return CHARNULL;
- X
- X! /* find size to copy (use all caps if possible) */
- X! for ( p1 = (char *)s ; *p1 ; p1++ ) {
- X! if ( !caps && isupper( *p1 ) ) caps = p1;
- X! if ( caps && isupper( *p1 ) ) ++len;
- X }
- X- if ( !caps ) len = (int) (p1 - (char *)s);
- X
- X /* copy string into buffer and convert it to desired case */
- X /* <buf> must be large enough to hold the result! */
- X! p1 = buf;
- X! if ( len ) {
- X! if ( !caps ) {
- X! for ( p1 = buf, p2 = (char *)s, i = 0 ; i < len ; p1++, p2++, i++ ) {
- X! *p1 = TO_KWDCASE(*p2);
- X! }
- X! }/*if*/
- X
- X- else {
- X- for ( p2 = caps, i = 0 ; i < len ; p2++ ) {
- X- if ( isupper( *p2 ) ) {
- X- *(p1++) = TO_KWDCASE(*p2);
- X- ++i;
- X- }
- X- }/*for*/
- X- }/*else*/
- X- }/*if*/
- X- *p1 = '\0';
- X-
- X return buf; /* return buffer address */
- X }
- X #ifndef amiga_style
- X
- X /***************************************************************************
- X--- 845,887 ----
- X ** and copy the result in the given buffer
- X ***^^**********************************************************************/
- X #ifdef __ANSI_C__
- X! char *get_kwdname( const char *s, char *buf )
- X #endif
- X {
- X! register char *p1 = (char *)s, *p2, ch;
- X! BOOL caps = FALSE;
- X
- X if ( !p1 ) return CHARNULL;
- X
- X! /* see if sname and aname are separated by c_ARG_SEP */
- X! p2 = strchr( p1, c_ARG_SEP );
- X! if ( p2 ) {
- X! ch = *p2;
- X! *p2 = '\0';
- X! KWDCASECOPY( buf, p1 );
- X! *p2 = ch;
- X! return buf;
- X }
- X
- X /* copy string into buffer and convert it to desired case */
- X /* <buf> must be large enough to hold the result! */
- X! for ( p2 = buf; *p1 ; p1++ ) {
- X! if ( isupper(*p1) ) {
- X! if ( !caps ) {
- X! caps = TRUE;
- X! p2 = buf;
- X! }
- X! *p2++ = TO_KWDCASE(*p1);
- X! }
- X! else if ( !caps ) {
- X! *p2++ = TO_KWDCASE(*p1);
- X! }
- X! }
- X! *p2 = '\0';
- X
- X return buf; /* return buffer address */
- X }
- X+
- X #ifndef amiga_style
- X
- X /***************************************************************************
- X***************
- X*** 928,945 ****
- X #endif
- X {
- X int i, clen, tlen, too_short=0;
- X! CONST char *full_targ;
- X! char *up_targ;
- X
- X
- X! full_targ = target;
- X
- X- /* make up_targ the uppercase portion of target */
- X- up_targ = strdup( full_targ );
- X- (VOID) get_keyword( full_targ, up_targ );
- X-
- X /* match at least MINLEN characters if possible */
- X! tlen = strlen( up_targ );
- X clen = strlen( candidate );
- X if ( (tlen >= MINLEN) && (clen < MINLEN) ) {
- X ++too_short; /* not long enough -- no match */
- X--- 938,951 ----
- X #endif
- X {
- X int i, clen, tlen, too_short=0;
- X! char arg_targ[ 256 ], kwd_targ[ 256 ];
- X
- X
- X! /* make kwd_targ the keyword portion of target */
- X! (VOID) get_kwdname( target, kwd_targ );
- X
- X /* match at least MINLEN characters if possible */
- X! tlen = strlen( kwd_targ );
- X clen = strlen( candidate );
- X if ( (tlen >= MINLEN) && (clen < MINLEN) ) {
- X ++too_short; /* not long enough -- no match */
- X***************
- X*** 947,953 ****
- X
- X #ifdef vms_style
- X /* if first two chars are NO then match at least MINLEN+2 chars */
- X! if ( !strnicmp(up_targ, "NO", 2) ) {
- X if ( (tlen >= (MINLEN + 2)) && (clen < (MINLEN + 2)) ) {
- X ++too_short; /* not long enough -- no match */
- X }
- X--- 953,959 ----
- X
- X #ifdef vms_style
- X /* if first two chars are NO then match at least MINLEN+2 chars */
- X! if ( !strnicmp(kwd_targ, "NO", 2) ) {
- X if ( (tlen >= (MINLEN + 2)) && (clen < (MINLEN + 2)) ) {
- X ++too_short; /* not long enough -- no match */
- X }
- X***************
- X*** 954,971 ****
- X }
- X #endif
- X
- X! /* first try to match prefix of the uppercase portion */
- X! i = (too_short) ? -1 : strnicmp(up_targ, candidate, clen);
- X
- X- free( up_targ );
- X-
- X /* did we match? */
- X if ( !i ) return 0; /* yes! */
- X
- X! /* no! : compare the whole target
- X ** match at least MINLEN characters if possible
- X */
- X! tlen = strlen(full_targ);
- X if ( (tlen >= MINLEN) && (clen < MINLEN) ) {
- X return -1; /* not long enough -- no match */
- X }
- X--- 960,978 ----
- X }
- X #endif
- X
- X! /* first try to match prefix of the keyword portion */
- X! i = (too_short) ? -1 : strnicmp(kwd_targ, candidate, clen);
- X
- X /* did we match? */
- X if ( !i ) return 0; /* yes! */
- X
- X! /* no! : compare the argument portion
- X ** match at least MINLEN characters if possible
- X */
- X! /* make arg_targ the argument portion of target */
- X! (VOID) get_argname( target, arg_targ );
- X!
- X! tlen = strlen(arg_targ);
- X if ( (tlen >= MINLEN) && (clen < MINLEN) ) {
- X return -1; /* not long enough -- no match */
- X }
- X***************
- X*** 972,978 ****
- X
- X #ifdef vms_style
- X /* if first two chars are NO then match at least MINLEN+2 chars */
- X! if ( !strnicmp(full_targ, "no", 2) ) {
- X if ( (tlen >= (MINLEN + 2)) && (clen < (MINLEN + 2)) ) {
- X return -1; /* not long enough -- no match */
- X }
- X--- 979,985 ----
- X
- X #ifdef vms_style
- X /* if first two chars are NO then match at least MINLEN+2 chars */
- X! if ( !strnicmp(arg_targ, "no", 2) ) {
- X if ( (tlen >= (MINLEN + 2)) && (clen < (MINLEN + 2)) ) {
- X return -1; /* not long enough -- no match */
- X }
- X***************
- X*** 979,985 ****
- X }
- X #endif
- X
- X! return strnicmp(full_targ, candidate, clen);
- X }
- X
- X
- X--- 986,992 ----
- X }
- X #endif
- X
- X! return strnicmp(arg_targ, candidate, clen);
- X }
- X
- X
- X***************
- X*** 992,1014 ****
- X int match( candidate, target) char *candidate, *target;
- X # endif
- X {
- X! int i, j;
- X! char c;
- X
- X! i = j = 0;
- X
- X! while ( isgraph(target[i]) || isgraph(candidate[i]) ) {
- X! while ( islower(target[i]) ) i++;
- X! if ( !isgraph(target[i]) ) {
- X! if ( !isgraph(candidate[j]) ) return 0;
- X! return stricmp(target, candidate);
- X! }
- X! c = islower( candidate[j] ) ? toupper(candidate[j]) : candidate[j];
- X! if (target[i] != c) return stricmp(target, candidate);
- X! i++;
- X! j++;
- X! }
- X! return 0;
- X }
- X
- X #endif
- X--- 999,1016 ----
- X int match( candidate, target) char *candidate, *target;
- X # endif
- X {
- X! char kwd_targ[ 256 ], arg_targ[ 256 ];
- X! int rc;
- X
- X! (VOID) get_kwdname( target, kwd_targ );
- X! rc = stricmp( kwd_targ, candidate );
- X
- X! if ( rc == 0 ) return 0;
- X!
- X! (VOID) get_argname( target, arg_targ );
- X! rc = stricmp( arg_targ, candidate );
- X!
- X! return rc;
- X }
- X
- X #endif
- X*** strfuncs.h.OLD Mon Jun 3 11:18:00 1991
- X--- strfuncs.h Mon May 13 13:59:31 1991
- X***************
- X*** 33,40 ****
- X EXTERN int strsplit ARGS(( char ***, char *, const char * ));
- X EXTERN char *strjoin ARGS(( const char **, const char * ));
- X
- X! EXTERN char *get_name ARGS(( const char *, char * ));
- X! EXTERN char *get_keyword ARGS(( const char *, char * ));
- X EXTERN int match ARGS(( const char *, const char * ));
- X EXTERN char *basename ARGS(( char * ));
- X EXTERN VOID indent_para ARGS(( FILE *, int, int,
- X--- 33,40 ----
- X EXTERN int strsplit ARGS(( char ***, char *, const char * ));
- X EXTERN char *strjoin ARGS(( const char **, const char * ));
- X
- X! EXTERN char *get_argname ARGS(( const char *, char * ));
- X! EXTERN char *get_kwdname ARGS(( const char *, char * ));
- X EXTERN int match ARGS(( const char *, const char * ));
- X EXTERN char *basename ARGS(( char * ));
- X EXTERN VOID indent_para ARGS(( FILE *, int, int,
- X*** unix_args.c.OLD Mon Jun 3 11:18:42 1991
- X--- unix_args.c Mon May 13 13:44:30 1991
- X***************
- X*** 215,221 ****
- X BSET( arg_flags(ad), ARGGIVEN );
- X }
- X else {
- X! (VOID) get_keyword( arg_sname(ad), name );
- X usrerr("option %c%s requires an argument", c_KWD_PFX, name);
- X arg_flags(ad) = flags;
- X parse_error = pe_SYNTAX;
- X--- 215,221 ----
- X BSET( arg_flags(ad), ARGGIVEN );
- X }
- X else {
- X! (VOID) get_kwdname( arg_sname(ad), name );
- X usrerr("option %c%s requires an argument", c_KWD_PFX, name);
- X arg_flags(ad) = flags;
- X parse_error = pe_SYNTAX;
- X***************
- X*** 339,345 ****
- X BSET( arg_flags(ad), ARGGIVEN );
- X }
- X else {
- X! (VOID) get_name(arg_sname(ad), name);
- X usrerr( "%s required for %c%c flag",
- X name, c_OPT_PFX, arg_cname(ad) );
- X arg_flags(ad) = flags;
- X--- 339,345 ----
- X BSET( arg_flags(ad), ARGGIVEN );
- X }
- X else {
- X! (VOID) get_argname(arg_sname(ad), name);
- X usrerr( "%s required for %c%c flag",
- X name, c_OPT_PFX, arg_cname(ad) );
- X arg_flags(ad) = flags;
- X***************
- X*** 505,517 ****
- X char *pos;
- X argName_t name, keyword;
- X
- X! (VOID) get_name( arg_sname(ad), name );
- X
- X if (ARG_isPOSITIONAL(ad)) {
- X sprintf( buf, "<%s>", name );
- X }
- X else {
- X! (VOID) get_keyword( arg_sname(ad), keyword );
- X
- X if ( isupper(arg_cname(ad)) && toupper(*keyword) == arg_cname(ad) ) {
- X *keyword = toupper(*keyword);
- X--- 505,517 ----
- X char *pos;
- X argName_t name, keyword;
- X
- X! (VOID) get_argname( arg_sname(ad), name );
- X
- X if (ARG_isPOSITIONAL(ad)) {
- X sprintf( buf, "<%s>", name );
- X }
- X else {
- X! (VOID) get_kwdname( arg_sname(ad), keyword );
- X
- X if ( isupper(arg_cname(ad)) && toupper(*keyword) == arg_cname(ad) ) {
- X *keyword = toupper(*keyword);
- X*** unix_man.c.OLD Mon Jun 3 11:18:48 1991
- X--- unix_man.c Mon May 13 13:44:31 1991
- X***************
- X*** 75,81 ****
- X char *pos;
- X argName_t name;
- X
- X! (VOID) get_name( arg_sname(ad), name );
- X
- X if (ARG_isPOSITIONAL(ad)) {
- X if ( ARG_isMULTIVAL(ad) ) {
- X--- 75,81 ----
- X char *pos;
- X argName_t name;
- X
- X! (VOID) get_argname( arg_sname(ad), name );
- X
- X if (ARG_isPOSITIONAL(ad)) {
- X if ( ARG_isMULTIVAL(ad) ) {
- X***************
- X*** 87,93 ****
- X--- 87,97 ----
- X return strlen(name);
- X }/*if parm*/
- X
- X+ #ifdef SVR4
- X+ sprintf(buf, "\\f4\\-%c\\fP", arg_cname(ad));
- X+ #else
- X sprintf(buf, "\\fB\\-%c\\fP", arg_cname(ad));
- X+ #endif
- X pos = buf + strlen(buf);
- X
- X if ( ARG_isVALTAKEN(ad) && !ARG_isBOOLEAN(ad) && !ARG_isPSEUDOARG(ad) ) {
- X***************
- X*** 185,191 ****
- X--- 189,199 ----
- X printf(".if n .ll 78\n");
- X
- X COMMENT;
- X+ #ifdef SVR4
- X+ TH( name, 1 );
- X+ #else
- X TH( strupr(name), 1 );
- X+ #endif
- X
- X COMMENT;
- X SH( "NAME" );
- X***************
- X*** 195,201 ****
- X--- 203,213 ----
- X SH( "SYNOPSIS" );
- X
- X len = strlen( program ) + 1;
- X+ #ifdef SVR4
- X+ sprintf( name, "\\f4%s\\fP", program );
- X+ #else
- X sprintf( name, "\\fB%s\\fP", program );
- X+ #endif
- X TP( len, name );
- X
- X maxlen = 0;
- X*** useful.h.OLD Mon Jun 3 11:18:52 1991
- X--- useful.h Thu May 16 16:21:26 1991
- X***************
- X*** 31,36 ****
- X--- 31,42 ----
- X # endif
- X #endif /* _unix */
- X
- X+ #if (defined(_UNIX) || defined(__UNIX) || defined(_UNIX_) || defined(__UNIX__))
- X+ # ifndef unix
- X+ # define unix
- X+ # endif
- X+ #endif /* _UNIX */
- X+
- X /* give a stab at the dual Unix universe dilemma (UCB vs AT&T) */
- X #ifdef unix
- X # if ( defined(_BSD) && !defined(BSD) )
- X***************
- X*** 84,102 ****
- X #endif /* unix */
- X
- X #ifndef MSDOS
- X! # if ( defined(_MSDOS_) || defined(__MSDOS__) || defined(_MSDOS) )
- X # define MSDOS
- X # endif
- X #endif
- X
- X #ifndef OS2
- X! # if ( defined(_OS2_) || defined(__OS2__) || defined(_OS2) )
- X # define OS2
- X # endif
- X #endif
- X
- X #ifndef AmigaDOS
- X! # if ( defined(MANX) || defined(AZTEC) )
- X # define AmigaDOS
- X # endif
- X #endif /* AmigaDOS */
- X--- 90,108 ----
- X #endif /* unix */
- X
- X #ifndef MSDOS
- X! # if (defined(_MSDOS_)||defined(__MSDOS__)||defined(_MSDOS)||defined(__MSDOS))
- X # define MSDOS
- X # endif
- X #endif
- X
- X #ifndef OS2
- X! # if ( defined(_OS2_) || defined(__OS2__) || defined(_OS2) || defined(__OS2) )
- X # define OS2
- X # endif
- X #endif
- X
- X #ifndef AmigaDOS
- X! # if ( defined(AMIGA) || defined(MANX) || defined(AZTEC) )
- X # define AmigaDOS
- X # endif
- X #endif /* AmigaDOS */
- X***************
- X*** 303,312 ****
- X # endif /* !_SIZE_T_DEFINED */
- X #endif
- X
- X! #ifndef __malloc_h
- X! EXTERN ARBPTR malloc ARGS(( size_t ));
- X! EXTERN ARBPTR realloc ARGS(( ARBPTR, size_t ));
- X! EXTERN VOID free ARGS(( ARBPTR ));
- X #endif /*__malloc_h*/
- X
- X EXTERN ARBPTR ckalloc ARGS(( size_t ));
- X--- 309,316 ----
- X # endif /* !_SIZE_T_DEFINED */
- X #endif
- X
- X! #if ( !defined(__malloc_h) && !defined(__MALLOC_H) )
- X! # include <malloc.h>
- X #endif /*__malloc_h*/
- X
- X EXTERN ARBPTR ckalloc ARGS(( size_t ));
- X*** vms_args.c.OLD Mon Jun 3 11:18:57 1991
- X--- vms_args.c Mon May 13 13:44:32 1991
- X***************
- X*** 683,689 ****
- X BSET( arg_flags(ad), ARGVALGIVEN );
- X }
- X else {
- X! (VOID) get_keyword( arg_sname(ad), keyword );
- X usrerr("qualifier %s requires an argument", keyword);
- X arg_flags(ad) = flags;
- X parse_error = pe_SYNTAX;
- X--- 683,689 ----
- X BSET( arg_flags(ad), ARGVALGIVEN );
- X }
- X else {
- X! (VOID) get_kwdname( arg_sname(ad), keyword );
- X usrerr("qualifier %s requires an argument", keyword);
- X arg_flags(ad) = flags;
- X parse_error = pe_SYNTAX;
- X***************
- X*** 849,861 ****
- X char * pos;
- X argName_t keyword, name;
- X
- X! (VOID) get_name( arg_sname(ad), name );
- X
- X if (ARG_isPOSITIONAL(ad)) {
- X sprintf( buf, "<%s>", name );
- X }
- X else {
- X! (VOID) get_keyword( arg_sname(ad), keyword );
- X sprintf( buf, "%c%s", *s_KWD_PFX, keyword );
- X pos = buf + strlen(buf);
- X
- X--- 849,861 ----
- X char * pos;
- X argName_t keyword, name;
- X
- X! (VOID) get_argname( arg_sname(ad), name );
- X
- X if (ARG_isPOSITIONAL(ad)) {
- X sprintf( buf, "<%s>", name );
- X }
- X else {
- X! (VOID) get_kwdname( arg_sname(ad), keyword );
- X sprintf( buf, "%c%s", *s_KWD_PFX, keyword );
- X pos = buf + strlen(buf);
- X
- X***************
- X*** 965,971 ****
- X
- X
- X if ( ARG_isMULTIVAL(ad) ) {
- X! (VOID) get_name( arg_sname(ad), name );
- X strcat(buf, "[,<");
- X strcat(buf, name);
- X strcat(buf, ">...]");
- X--- 965,971 ----
- X
- X
- X if ( ARG_isMULTIVAL(ad) ) {
- X! (VOID) get_argname( arg_sname(ad), name );
- X strcat(buf, "[,<");
- X strcat(buf, name);
- X strcat(buf, ">...]");
- X*** xparse.c.OLD Mon Jun 3 11:19:13 1991
- X--- xparse.c Mon Jun 3 10:29:49 1991
- X***************
- X*** 857,872 ****
- X if ( ARG_isREQUIRED(ad) && !ARG_isGIVEN(ad) ) {
- X /* still didn't get a value... sigh */
- X if ( ARG_isPOSITIONAL(ad) ) {
- X! (VOID) get_name( arg_sname(ad), s );
- X usrerr("%s required", s);
- X }
- X else {
- X #ifdef amiga_style
- X! (VOID) get_keyword( arg_sname(ad), s );
- X usrerr("argument required for %s keyword", s);
- X #endif
- X #ifdef ibm_style
- X! (VOID) get_name( arg_sname(ad), s );
- X {
- X char c, *pfx = getenv( "SWITCHAR" );
- X c = ( pfx && *pfx ) ? *pfx : '/';
- X--- 857,872 ----
- X if ( ARG_isREQUIRED(ad) && !ARG_isGIVEN(ad) ) {
- X /* still didn't get a value... sigh */
- X if ( ARG_isPOSITIONAL(ad) ) {
- X! (VOID) get_argname( arg_sname(ad), s );
- X usrerr("%s required", s);
- X }
- X else {
- X #ifdef amiga_style
- X! (VOID) get_kwdname( arg_sname(ad), s );
- X usrerr("argument required for %s keyword", s);
- X #endif
- X #ifdef ibm_style
- X! (VOID) get_argname( arg_sname(ad), s );
- X {
- X char c, *pfx = getenv( "SWITCHAR" );
- X c = ( pfx && *pfx ) ? *pfx : '/';
- X***************
- X*** 874,884 ****
- X }
- X #endif
- X #ifdef unix_style
- X! (VOID) get_name( arg_sname(ad), s );
- X usrerr("%s required for %c%c flag", s, c_OPT_PFX, arg_cname(ad));
- X #endif
- X #ifdef vms_style
- X! (VOID) get_keyword( arg_sname(ad), s );
- X usrerr("value required for %c%s qualifier", *s_KWD_PFX, s);
- X #endif
- X }
- X--- 874,884 ----
- X }
- X #endif
- X #ifdef unix_style
- X! (VOID) get_argname( arg_sname(ad), s );
- X usrerr("%s required for %c%c flag", s, c_OPT_PFX, arg_cname(ad));
- X #endif
- X #ifdef vms_style
- X! (VOID) get_kwdname( arg_sname(ad), s );
- X usrerr("value required for %c%s qualifier", *s_KWD_PFX, s);
- X #endif
- X }
- X***************
- X*** 1689,1701 ****
- X int *argflags;
- X BOOL is_match = FALSE;
- X
- X! for (args = argd; !is_match && args; args = cmd_defargs(argd) ) {
- X! for (ad = ARG_FIRST(args); !ARG_isEND(ad); ARG_ADVANCE(ad) ) {
- X! if (arg_type(ad) == argDummy) continue;
- X if ( match(name, arg_sname(ad)) == 0 ) {
- X is_match = TRUE;
- X break;
- X! }
- X }/*foreach arg*/
- X }/*foreach argdesc*/
- X
- X--- 1689,1702 ----
- X int *argflags;
- X BOOL is_match = FALSE;
- X
- X! for (args = argd ; args && !is_match ; args = cmd_defargs(args)) {
- X! for (ad = ARG_FIRST(args) ; !ARG_isEND(ad) ; ARG_ADVANCE(ad)) {
- X! if ( arg_type(ad) == argDummy ) continue;
- X!
- X if ( match(name, arg_sname(ad)) == 0 ) {
- X is_match = TRUE;
- X break;
- X! }/*if*/
- X }/*foreach arg*/
- X }/*foreach argdesc*/
- X
- END_OF_FILE
- if test 50339 -ne `wc -c <'PATCH'`; then
- echo shar: \"'PATCH'\" unpacked with wrong size!
- fi
- # end of 'PATCH'
- fi
- echo shar: End of archive.
- exit 0
- exit 0 # Just in case...
- --
- Kent Landfield INTERNET: kent@sparky.IMD.Sterling.COM
- Sterling Software, IMD UUCP: uunet!sparky!kent
- Phone: (402) 291-8300 FAX: (402) 291-4362
- Please send comp.sources.misc-related mail to kent@uunet.uu.net.
-